Method and apparatus for providing distributed control of a home automation and control system

ABSTRACT

A method and apparatus for providing distributed control of a home automation and control system is provided. Each device participating in a home automation and control system is equipped with control logic for providing distributed control. Through the control logic, each device maintains scene definitions describing the state of the device for each scene in which it participates. When any device in the system receives a request to launch a scene, such as a button press on one of the devices, the device broadcasts a scene state change message to all devices within the home automation and control system. The scene state change message identifies to each device that a particular scene that should be launched. Each device in the system receives the message and determines whether the device is a participant in the scene. If the device is a participant in the scene, the device adjusts its state according to a scene definition stored in the device associated with the scene. The device may adjust a controlled electrical load, such as a light, according to the scene definition by turning the load on, off, or setting the load to some intermediate value. If the device is a not participant in the scene, the device remains unaffected.

CROSS-REFERENCES TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.10/154,425, filed May 22, 2002, which is a continuation-in-part of U.S.patent application Ser. No. 09/955,570, filed Sep. 17, 2001, which is acontinuation of U.S. patent application Ser. No. 09/751,383, filed Dec.29, 2000, now abandoned, which claims the benefit of prior U.S.Provisional Patent Application No. 60/173,741, filed Dec. 30, 1999, eachof which applications is expressly incorporated herein by reference.

FIELD OF THE INVENTION

The present invention relates to the field of home automation andcontrol systems and, more particularly, to a method and apparatus forproviding distributed control of dynamically created home automation andcontrol system scenes.

BACKGROUND OF THE INVENTION

Home automation and control systems are used to control the behavior ofan environment such as a home or office building. Home automation andcontrol systems allow home occupants to automate and control the use ofelectrical products and appliances in and around the house. Homeautomation and control systems create and launch “scenes,” also calledhouse scenes, involving one or more products and appliances. Examples ofthe types of products and appliances that can be automated andcontrolled are lighting, entertainment, cooking, heating, airconditioning, window treatments, and landscaping. Examples of specificproducts and appliances that can be automated and controlled are lights,television sets, sound systems, coffee machines, ovens, furnaces, airconditioners, water heaters, humidifiers and lawn sprinklers. Eachproduct or appliance can be set to a number of different states, i.e.,on, off, and, if appropriate, an intermediate level. The controller ofan electrical product or appliance, together with its effect on thecontrolled electrical product or appliance, will be referred to as a“device.” The “load control button” on a device is the button on thedevice controller that directly controls or affects the electricalproduct or appliance. The controller may be a physically separate entityfrom the product or appliance being controlled, or the controller may bephysically embedded or integrated into the product or appliance beingcontrolled.

A “scene” includes one (1) or more devices set to a particular state.For example, a morning scene could include the furnace set to 70°, themaster bathroom lights on at 50%, the kitchen lights on at 100%, thecoffee machine on, the television set in the kitchen on to a particularchannel, and the front porch light off. This setting of devicesconstitutes one scene, and may be triggered by a trigger event alsodefined by the user, such as the press of a button on a remote control.A different scene may set additional devices and some or all of themembers of the one scene to the same or different states. Current homeautomation and control systems are based on controlling devices throughdevice resources, but these device resources are not interoperablebetween unlike resources. Current home automation and control systemsrequire someone or something in the programming process to understandthe details of the system device resources or each type of deviceresource in the system to create complex scenes. Current home automationand control systems create and launch scenes using several methods, eachof which has significant drawbacks.

One method used by current home automation and control systems is todivide the devices into groups that all respond in basically the sameway to a command. Some groups are composed of like type deviceresources, and other groupings allow mixed type resources, but alllike-type device resources are limited to the same actions, i.e., agroup command received by like type device resources in the group willforce each of those devices to the same state. This method does notprovide the flexibility that in one scene some of the same type devicesmight be on and others off, while in another scene all of the devicesmight be on. Such an approach is, thus, limited to simple, synchronizedscenes. In current home automation and control systems able to createmore complex scenes, a central controller is commonly used, with a scenebeing launched, or triggered, when the central controller detects thetrigger event. In response to detecting the trigger event, the centralcontroller sends messages to the devices that are members of the scenedirecting them to go to their respective scene states. If the centralcontroller fails, scenes can no longer be triggered because thecontroller can no longer send the necessary messages to the scene memberdevices to produce the scenes. In effect, if the central controllerfails, the entire home automation and control system is renderedunusable. This single point of failure is highly undesirable to users ofsuch systems. Additionally, the use of a central controller creates aheavy load of network traffic, since the central controller must send amessage to each scene member device individually. The message traffic onthe communication network for a central controller based scene with manymember devices grows proportionally with the number of devices. For ascene with a large number of devices, this also causes a time delay timebetween the start of the scene when the first device gets its messageuntil the last device gets its message. Such heavy network traffic anddelay in triggering scene member devices is also undesirable to users ofhome automation and control systems.

Another method used by current home automation and control systems is tocreate pre-defined scenes sometimes called home modes. Examples of suchhome modes are “away” or “home” or “vacation” scenes. A device receivinga scene launch command will know what state the device should be in forthe chosen home mode, but the scene state is determined by themanufacturer for a particular device subtype. If the manufacturerdefined home mode does not entirely produce the scene state desired bythe home user, or different states are desired for the same device types(a night scene has all lights out except a nightlight in the bathroom,as an example) the scene can not be modified. Furthermore, such homeautomation and control systems can have only one active home mode at atime, and the home mode affects all devices in the system. This is notdesirable in a house with multiple users, where each user may want toselect a different scene to control the user's local environment at thesame time, without affecting any system devices not in the scene desiredby the user.

In other current home automation and control systems able to create morecomplex scenes, a specialized central programming tool is used to createcomplex scenes that, once programmed, can operate in a distributedfashion, i.e., do not then require a central controller to send multiplemessages to set the respective states of multiple devices each time ascene is triggered. However, the central programming tool may or may notbe a permanent part of such a home automation and control system; and ifthe central programming tool is lost or fails, the system cannot bereconfigured. This can be a problem when the user of the home automationand control system wishes to reconfigure the system, particularly when anew home owner finds the central programming tool went with the previousowner's computer or has otherwise been lost.

Also, the central programming tool is typically specialized, in that itis limited to device types that were known or contemplated when theoriginal home automation and control system was installed. Thus, thecentral programming tool cannot reconfigure the system to incorporatenewly developed device types, such as new media players, environmentalcontrol devices, etc., for which the programming tool does not have therequisite programming instructions. Thus, adding such new devicesnecessitates upgrades to the central programming tool. Furthermore, theaddition of devices, whether originally contemplated or not, may reach anumber exceeding the central programming tool or central controllerlimitations for number of devices in a scene.

Therefore, in light of the above, there is a need for a distributed andinteroperable home automation and control scene method that providesdynamic complex scene creation but does not increase scene launchmessage traffic proportionally to the number of devices in the scene andthat does not require someone or some entity in the programming processto understand the details of the system devices or each type of devicein the system to create complex scenes.

SUMMARY OF THE INVENTION

In accordance with the present invention a distributed home automationand control system method and apparatus is provided. The method andapparatus creates and launches scenes in a way that does not increasescene launch message traffic proportionally to the number of devices inthe scene and does not require someone or some entity in the programmingprocess to understand the device type details of the system. Scenes arecreated system wide and may be called “house scenes.” “House” in thiscase means any type of premises, including homes, offices, boats, yards,etc. Each device in the system knows its own device-type details and iscapable of dynamically learning the current state of those device-typedetails such that it can duplicate the current device state in a sceneat a latter time without any external entity at any time knowing thedevice type-details. Instead of a programming tool or central controllerlearning the scene trigger(s) and scene state for each system device,each individual device learns its membership status in each house sceneand the load state of the product or appliance controlled by the device.

In accordance with other aspects of this invention, each house scene isassigned a unique house scene identifier. House scenes are created byeach individual member device, when given an indication to learn a newhouse scene, locally saving its membership status and the load state ofthe product or appliance associated with the house scene identifier, theproduct or appliance load state being the current state of the devicewhen the device is given the indication to learn a new scene. When anon-member device is given the indication to learn a new scene, thedevice need not save any house scene information for that house sceneidentifier.

In accordance with further aspects of this invention, scene launchcommands are generated by the actuation of scene trigger buttons.Trigger buttons may have fixed house scene identifiers associated withthem, or a trigger button may learn a system resource house sceneidentifier to be associated with the actuating trigger button.Preferably, trigger buttons do not have predefined house sceneidentifiers associated with them. Also, preferably, each trigger buttonobtains and learns the house scene identifier at the time when it isassociated with a house scene. When given an indication to learn a newsystem resource house scene identifier as a scene trigger, the devicelocally saves and associates the house scene identifier with theindicated particular scene trigger button. When the scene trigger buttonthat has learned or been associated with a house scene identifier isactivated, the activated scene trigger button launches the house sceneby broadcasting a launch command to the entire network that contains theassociated house scene identifier.

In accordance with yet other aspects of this invention, when a device inthe network receives a broadcast scene launch command and the devicemembership status associated with the received house scene identifierindicates the device is a scene participant of that house scene, thedevice recalls the locally saved scene state associated with that housescene identifier. This allows one simple, short message containing thescene identifier to launch a scene in normal operation without regard tothe number of scene members. The message does not tell the memberdevices how to implement a particular house scene, it only identifiesthe particular house scene to be launched. In accordance with yet stillother aspects of this invention, alternatively, or in addition, a housescene can be launched by another entity, such as software running on apersonal computer or an external controller, that is able to broadcast ascene launch command containing the house scene identifier for thatparticular house scene. While the system house scene resource is mostdesirable when the scene launch is broadcast to the network, thoseskilled in the art will appreciate that for network protocols wherenetwork broadcast addressing is not robustly supported or desirable, ascene launch identifier message could be addressed to each scene memberdevice, individually or in a combined addressing scheme.

As will be appreciated from the foregoing description, the inventionprovides distributed programming and control of a home automation andcontrol system. Each system device maintains scene definitionsdescribing the state settings of the device for each scene in which thedevice participates as a scene member. Because the scene state settingand programming logic is embedded within each device participant, thecontrol and programming of the system is distributed, therebyeliminating the single point of failure found in previous homeautomation and control systems. While any device in the system may fail,the other devices will continue to know their scene state settings andoperate normally when a scene launch command is received. While anydevice in the system may fail and not be reprogrammable, such failurewill not prevent other devices from being reprogrammable. Other deviceswill continue to be reprogrammable.

One benefit of the invention is a reduction in the expertise required tocreate complex scenes when compared to prior art solutions. Only devicesneed to know the details of their particular type in order to save ahouse scene state. No specialized knowledge of the devices to beincluded in a scene is needed by a central controller or centralizedprogramming tool. There is no need for any entity outside the localdevice to ever know the local device scene setting associated with aparticular house scene state, and no central controller is needed tocreate complex scenes. Each device can potentially be a member of manyscenes. There is no limit to the number of system devices that can bemembers of a house scene. House scenes can include and exclude devicesregardless of zone and group boundaries. A new device type can beincorporated into an existing house scene, even though that device typewas totally unknown at the time the original scene was developed. Noexisting entity in the system outside the new device needs to know thedetails of the type of new device, and no upgrades to any existingdevice, central controller or programming tool are needed to add the newdevice to a house scene.

Another benefit of the invention is a reduction in the network trafficrequired to launch a complex scene as compared to central controllerprior art solutions. Only a single trigger message with the sceneidentifier must be sent to devices participating in a scene in order tolaunch the scene. There is no requirement for a central controller tosend a “set device” command to each different scene member, group, orzone. No other message traffic is necessary. Each device maintains itsown scene definition for each scene describing the state of the devicefor the scene. Therefore, the launch scene command only needs toidentify the scene to system devices in order for the scene to belaunched. This message protocol allows scene control to be distributedthroughout the home automation and control system, and also reduces thedelay found in current central-controller-based home automation andcontrol systems between the time a trigger event is received and whenthe last scene member is activated.

Generally described, the present invention provides a method andapparatus for providing distributed house scene programming anddistributed control of a home automation and control system. Accordingto one embodiment of the present invention, each device participating ina home automation and control system is embedded with control logic forproviding distributed control. Through the control logic, each devicemaintains scene definitions describing the state of the device for eachscene in which it participates.

When any device in the system receives a request to launch a scene, suchas a scene trigger button press on one of the devices, the devicebroadcasts a scene state change message to all devices within the homeautomation and control system. The scene state change message identifiesto each device a particular scene that should be launched. Each devicein the system receives the message and determines whether the device isa participant in the scene. If the device is a participant in the scene,the device adjusts its state according to a scene definition associatedwith the scene stored in the device. In particular, the device mayadjust a controlled electrical load, such as a light or appliance,according to the scene definition by turning the load on, off, orsetting the load to some intermediate value. In this manner, a scene maybe launched across an entire home automation and control network.

In addition to providing a distributed home automation and controlmethod, the present invention also provides a related computer-readablemedium and system for providing distributed control of a home automationand control system.

BRIEF DESCRIPTION OF THE DRAWINGS

The foregoing aspects and many of the attendant advantages of thisinvention will become more readily appreciated as the same become betterunderstood by reference to the following detailed description, whentaken in conjunction with the accompanying drawings, wherein:

FIG. 1 is a block diagram showing an illustrative home automation andcontrol system that provides an operating environment for an actualembodiment of the present invention.

FIG. 2 is a block diagram showing a microcontroller and relatedcircuitry that provides distributed control functionality and a simpleprogramming interface in an actual embodiment of the present invention.

FIGS. 3A-3C are block diagrams showing illustrative switch devicesutilized in an actual embodiment of the present invention.

FIG. 4 is a block diagram showing the software architecture utilized inan actual embodiment of the present invention.

FIG. 5 is a flow diagram showing a routine for locally capturing a housescene value in a device according to an actual embodiment of the presentinvention.

FIG. 6 is a flow diagram showing a routine for conditional local captureof a house scene value in a device if that device is a member of thescene being programmed according to an actual embodiment of the presentinvention.

FIG. 7 is a flow diagram showing a routine for capturing a house scenetrigger in a device according to an actual embodiment of the presentinvention.

FIG. 8 is a flow diagram showing a routine for providing normal modehouse scene operation in a device according to an actual embodiment ofthe present invention.

FIG. 9 is a state machine diagram showing the normal house sceneoperation of a device according to an actual embodiment of the presentinvention.

FIG. 10 is a state machine diagram showing toggling a house scene launchbetween the activate and deactivate scene states of a device accordingto an actual embodiment of the present invention.

FIG. 11 is a flow diagram showing a routine for processing a one-stepresource capture indication message.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

The present invention is directed to a method and apparatus forproviding distributed scene programming and distributed control of ahome automation and control system. According to an embodiment of thepresent invention, a device is provided for use in a home automation andcontrol system that includes control logic for local storage of itshouse scene participation states. When multiple such devices areutilized throughout a home automation and control system, control of thesystem is distributed among the devices. Referring now to the figures,in which like numerals represent like elements, an actual embodiment ofthe present invention will be described. FIG. 1 provides an overview ofan illustrative home automation and control system 2 in which aspects ofthe present invention may be practiced. It should be appreciated thatthe use of the term “home automation and control” includes, but is notlimited to, home automation, home control, home networking, or connectedhome systems, which describe a home where products are not onlyconnected or integrated with each other locally, but also across theInternet and via other networks. Moreover, although the home automationand control system 2 is described herein as being implemented in a homeenvironment, those skilled in the art should appreciate that suchsystems may be similarly deployed in a business, boat, factory, or otherpremises where environmental automation is desired.

The home automation and control system 2 typically comprises a number ofparticipating devices connected together by a common bus 4, or someother communication means. In the actual embodiment of the presentinvention described herein, the bus 4 comprises typical householdwiring. Those skilled in the art should appreciate, however, that othertypes of communications media may be utilized including twisted wirepair, coaxial 10 cable, fiber optic cable, or other similar media.Additionally, wireless communications media, such as infrared (“IR”) orradio frequency (“RF”), may also be utilized to provide inter-devicecommunication.

The devices connected to the bus 4 and participating in the homeautomation and control system 2 may comprise a wide variety of devicesfor performing a wide variety of functions. For instance, such devicesmay include a thermostat control device 6 for controlling temperature, asensor port device 8 for detecting motion, light, sound, or otheractivity, a switch device 10 for triggering scenes or controlling anattached load, and a control port device 12 for controlling an attachedload, such as a lamp, appliance or motor. Additionally, such devices mayinclude a receiver port device 14 for triggering scenes based on IR orRF signals received from a wireless remote control 16 operated by a user18. External controllers and systems 24 may also participate in the homeautomation and control system 2 through the use of a PC Port device 22produced by C-SMART LLC of Las Cruces, N. Mex. The PC Port device 22provides an interface between devices compatible with the homeautomation and control system 2, and devices from other manufacturersthat are not natively compatible with the home automation and controlsystem 2.

The user 18 may interact with the home automation and control system 2through the devices. For instance, the user 18 may utilize the switchdevice 10 to control a load connected to a control port device 12 or totrigger or launch a house scene. The user 18 may also interact with thehome automation and control system 2 through the use of a personal orInternet gateway computer 20. The personal or Internet gateway computer20 is connected to the bus 4 and may participate in the home automationand control system 2 through the use of a PC Port device 22. The PC Portdevice 22 provides bi-directional communication support for the personalcomputer 20. In this manner, a user 18 can interact with the homeautomation and control system 2 through the computer 20, which isequipped with appropriate software, to interrogate devices, create orlaunch scenes, and perform other functions. The PC Port device 22provides bi-directional communication support for the personal computer20. In this manner, a user 18 can interact with the home automation andcontrol system 2 through the computer 20, which is equipped withappropriate software, to interrogate devices, create or launch scenes.The user 18 may also interact with the home automation and controlsystem 2 through the use of a tabletop controller 26 to launch scenes.

User interaction for programming and controlling the home automation andcontrol system 2 is described in greater detail below.

The home automation and control system illustrated in FIG. 1 does notrely on a central controller. Rather, control is distributed by addingintelligence to each device and locally storing the state for all scenesthe device participates in. As will be described below with respect toFIG. 2, this intelligence takes the form of a microcontroller and othercircuitry that provides functionality for distributing control of thehome automation and control system 2 to each of the devices in thesystem.

Turning now to FIG. 2, an illustrative microcontroller and relatedcontrol logic will be described that provides distributed controlfunctionality and a simple programming interface in the actualembodiment of the present invention described herein. As mentionedbriefly above, according to the actual embodiment of the presentinvention described herein, the microcontroller and associated circuitryshown in FIG. 2 is incorporated into each device in a home automationand control system. By incorporating the same such circuitry in eachdevice, control of the home automation and control system may bedistributed to each device.

Those skilled in the art should appreciate that the house sceneprogramming method of the invention is protocol independent and may beimplemented using many types of protocols, such as the Simple ControlProtocol, the Universal Plug and Play protocol which is run on a LocalArea Network (LAN), the IEEE-1394 protocol, and other protocols known tothose skilled in the art. The current embodiment applies this systemhouse scene resource method using as its base communication protocol theCEBus protocol and Home Plug and Play protocol (“HPnP”), both from theCEBus Industry Council, Inc. At the heart of each device is a CEBus®microcontroller 30. The CEBus® microcontroller 30 comprises a centralprocessing unit 62 and internal memory 64 for executing user programs,paired with functionality for interfacing with a power-line networkingprotocol, such as the CEBus® protocol from the CEBus® Industry Council,Inc. As known to those skilled in the art, the CEBus® standard (EIA-600)is an open standard for home automation that defines a common languagefor device communication over various media, including power lines.Those skilled in the art should appreciate that while the CEBus®protocol is utilized for device communication in the actual embodimentof the present invention described herein, other types of protocols mayalso be utilized.

In the actual embodiment of the present invention described herein, theCEBus® microcontroller 30 comprises a CEWay PL-One from the DomosysCorporation of Sainte-Foy, Quebec, Canada. The CEWay PL-One is a powerline transceiver integrated circuit that integrates the CEBus® physicallayer and embeds an 8052 microcontroller core. The CEWay PL-One includes256 bytes of internal data memory, three 16-bit timers/counters, a fullduplex serial port, and the ability to access up to 64 kb of externaldata memory and up to 64 kb of external code memory.

In the embodiment of the invention described herein, the CEWay PL-One ispaired with an external random access memory (“RAM”) 32, an externalread-only memory (“ROM”) 34, and a writeable non-volatile memory 36,such as flash memory. As will be described in greater detail below, thenon-volatile memory 36 may be used to store and retain scene settingsfor the device when power is removed. These memory devices may alsostore computer-readable instructions, data structures, program modules,or other data necessary for providing the functionality describedherein.

The CEBus® microcontroller 30 is also paired to a load 50 through a loadcontroller 52. The load 50 comprises an electrical load, such as thatprovided by a lamp, electrical equipment, or other home appliance. Theload controller 52 may be capable of sensing the level of the load 50and is capable of setting the load 50 to a particular level. The loadcontroller 52 communicates to the CEBus® microcontroller 30 so thatsensing the level of the load 50 or setting the load 50 to a particularlevel may be accomplished under programmatic control. According to theactual embodiment of the present invention described herein, the loadcontroller 52 may comprise a triac, for gradually varying the level of aload, or a relay for switching a load on or off. Other types of loadcontrol devices such as latching relays, bi-state relays, or otherdevices known to those skilled in the art may be utilized. The load 50and load controller 52 may also be electrically isolated from the CEBus®microcontroller 30 through the use of a switch 54, such as an air-gapswitch.

The CEBus® microcontroller 30 may also interface with an alternatingcurrent (“A/C”) power line 58 through the use of a 2-way buscommunication driver 56. The 2-way bus communication driver 56 receivesdata transmitted on the A/C power line 58 and converts this data to asignal compatible with the CEBus® microcontroller 30. The CEBusmicrocontroller 30 may be electrically isolated from the A/C power line58 through the use of a switch 60, such as an air-gap switch. As knownto those skilled in the art, the CEBus® microcontroller 30 may alsoreceive electrical power from a power supply 38 and a clock signal froma clock 40.

The CEBus® microcontroller 30 also interfaces with several input andoutput devices. In particular, the CEBus® microcontroller 30 interfaceswith a light emitting diode (“LED”) controller 44. The LED controller 44provides functionality for driving one or more LEDs mounted on thedevice. As will be described in greater detail below, the LEDs may beused to provide an indication to the user as to whether the device is ina normal operation mode, a programming mode, or in another state.

The CEBus® microcontroller 30 also receives input from a number of frontpanel switches 46. The front panel switches 46 may be mounted on a panelof the device accessible to the user. These switches may be utilized tocontrol a local load 50, or to trigger a scene that includes otherdevices. Additionally, a dedicated setup button 42 may be provided forplacing the device into HPnP network configuration modes. According tothe actual embodiment of the present invention described herein, thesetup button 42 is located behind a face plate of the device to preventinadvertent selection of the programming mode. Other physical inputs 48may also be provided to the CEBus® microcontroller 30, such as a timer.The front panel switches 46 and the setup button 42 are described ingreater detail below with respect to FIGS. 3A-3C.

Referring now to FIG. 3A, an illustrative switch device 10 will bedescribed. In the actual embodiment of the present invention describedherein, the switch device 10 provides a primary interface for a user tothe home automation and control system. In particular, the switch device10 may be utilized by the user to control a local load, to program ascene, and to trigger a scene. In this regard, the switch device 10,including the CEBus® microcontroller and related circuitry, is mountablewithin a standard wall-mount switch plate receptacle. Those skilled inthe art should appreciate that while the switch device 10 is describedherein as the primary interface to the home automation and controlsystem, the functionality and interface provided by the switch device 10for controlling loads, programming scenes, and launching scenes may besimilarly provided by other types of devices.

As described above, the switch device 10 includes the CEBus®microcontroller and related circuitry for interfacing with the homeautomation and control system and for providing the user interface. Theswitch device 10 also includes one or more buttons 70A-70B. In theactual embodiment of the present invention described herein, one of thebuttons, such as 70A, is dedicated for local load control. The localload control button may utilize a dimmer to gradually change the valueof the local load to which the switch is connected, such as a light.Alternatively, the local load control button may be utilized inconnection with a relay for turning the local load on or off.

If the local load control button utilizes a dimmer, the load button maybe held down to gradually ramp the local load up from its current stateor to gradually ramp the local load down. The ramp up continues untilthe load button is released, or until it reaches its maximum valuestate. The ramp down continues until the load button is released, oruntil it reaches its minimum value state. The ramp direction, up ordown, toggles each time the load button is pressed. Those skilled in theart will appreciate that the indications and actions of the load buttoncontrol may depend on the type of load being controlled. As will bedescribed in greater detail below, scenes may be assigned to theremaining buttons on the switch device 10. These buttons may then beutilized to trigger the assigned scene. Those skilled in the art shouldappreciate that the switch device 10 may be provided in a three-button70A-70C or four-button 70A-70D configuration as shown in FIGS. 3B and3C, respectively. Other configurations of the buttons on the switchdevice 10 will be apparent to those skilled in the art.

The switch device 10 also includes a visible LED 74. In another actualembodiment of the invention herein described, the LED 74 comprises atri-state LED capable of displaying the colors red, amber, and green.The LED 74 provides a visual indication to a user regarding the currentstate of the switch device 10. For instance, one color of the LED 74 mayindicate to the user that the switch device 10 is in a programming stateand another color may indicate that the switch device 10 is in a normaloperating state. The LED 74 may also be flashed in patterns incombination with the colors to provide other types of notifications. TheLED 74 is controlled by the LED controller 44 described above withreference to FIG. 2.

The switch device 10 also comprises a setup button 42. As will bedescribed in greater detail below, the setup button 42 is utilized toplace the switch device 10 into one or more programming modes. In orderto avoid inadvertent selection of the setup button 42, preferably, thebutton is positioned so as to avoid accidental presses. In the actualembodiment of the invention the setup button is mounted behind a switchdevice cover 78. In order to access the setup button 42, therefore, auser must remove the retaining screws and the switch device cover 78. Ifthe local load control button utilizes a dimmer then the switch device10 also includes an air-gap switch 72 for electrically isolating thelocal load from the power source.

FIG. 4 illustrates a software architecture for implementing aspects ofthe present invention. As described briefly above, each device utilizedin a home automation and control system according to the presentinvention includes a microcontroller and related circuitry fordistributing control of the home automation and control system to eachdevice and for providing a simple programming (SPI) interface. Toprovide such functionality, each device implements the CEBus® protocol80 for low-level communication.

As known to those skilled in the art, the CEBus® protocol uses 120 v,60-cycle, electrical wiring to transport messages between devices.Particularly, the CEBus® protocol 80 uses spread spectrum technology toovercome communication impediments found within electrical power lines.Spread spectrum signaling works by spreading a transmitted signal over arange of frequencies, rather than using a single frequency. The CEBus®protocol 80 spreads its signal over a range from 100 Hz to 400 Hz duringeach bit in a data packet. However, instead of using frequency hoppingor direct sequence spreading, the CEBus® protocol 80 sweeps through arange of frequencies as it is transmitted. As mentioned above, the CEWayPL-One from the Domosys Corporation implements the physical layer of theCEBus® protocol 80. Other layers of the CEBus® protocol 80 may beimplemented in software.

One layer above the CEBus protocol 80 sits the Home Plug & Play protocol82, also from the CEBus Industry Council, Inc. The Home Plug and Playprotocol 82 implements the Home Plug and Play Specification thatprovides a uniform implementation for using the Common ApplicationLanguage (“CAL”) (EIA-721), from the Electronic Industries Alliance(“EIA”), as a language for inter-device communication. CAL is ahigh-level command language used by devices for communication overCEBus®. The Home Plug and Play protocol 82 provides uniformimplementation rules for CAL, accommodates various communicationprotocols so that it works with multiple home network transports,defines common household objects through an object-oriented language,formalizes status, listener, and request objects, uses loose coupling toshare status reports, and provides other functionality as known to thoseskilled in the art.

A house scene system resource 84, a dynamic resource role model 86, anda simple programming interface (“SPI”) 88 all sit above the Home Plugand Play protocol 82. While the house scene system resource 84, thedynamic resource role model 86 and the SPI 88 can be implementedindependently of each other, they are preferably used together. Whenused together, the house scene system resource 84, the dynamic resourcerole model 86, and the simple programming interface 88 maximize thebenefits provided separately by each of these elements. Therefore, allthree are used in the preferred and actual embodiment of the presentinvention described herein. The house scene system resource 84 whencombined with the SPI 88 creates both distributed programming anddistributed control with no single point of failure. The dynamicresource role model 86 enables a more efficient and compactimplementation of the house scene system resource 84 and the SPI 88.

The dynamic resource role model 86 provides resource management forsubscriber-publisher based automation and control system protocols, suchas the CEBus 80 and Home Plug and Play 82. In a subscriber-requesterbased protocol, also called subscriber-publisher protocol, the systemconsists of device resources made up of “objects” that interoperate witheach other depending on their role. The subscriber or member roleprovides a way for a device resource to be affected by other devices.The requester role provides a way for a device to affect other devices.In normal operation, requester objects from one resource send commandsto associated subscriber resource objects. The dynamic resource rolemodel 86 provides dynamic resource object role selection, enables newroles, gives resources the ability to assign allowed roles and providesfor role protection. Preferably, the dynamic resource role model 86allows the same resource object to have multiple roles. A resourceobject with both requester and subscriber roles can both affect and beaffected by one or more resources. The ability for a resource object tofunction both as a requester and a subscriber simplifies theimplementation of system-wide resources such as house scenes that,unlike device specific resource objects, need system wide resourcestatus feedback. The dynamic resource role model 86 provides efficientsystem wide system resource status updating in the preferred and actualembodiment of the present invention. Further details about the dynamicresource role model 86 are discussed in U.S. patent application Ser. No.10/153,419, filed May 22, 2002, and entitled “Method and Apparatus forProviding a Dynamic Resource Role Model for Subscriber-Requester BasedProtocols in a Home Automation and Control System,” (Attorney Docket No.MSFT118857), the subject matter of which is incorporated herein byreference.

The simple programming interface (“SPI”) 88 provides a simple andconsistent user interface for programming scenes and multi-ways within ahome automation and control system. The SPI allows unlimited scenemember adjustments before finalizing a scene and automatically keepstrack of all scene members, thereby reducing scene programming time anderror rate. The SPI creates uniquely identified scenes by putting alldevices in the home automation and control system in a system wide sceneprogramming mode when starting a programming session. Each and everyscene member device is adjusted as many times as desired in any order.When all member devices have been adjusted to the final desired states,a trigger for the scene is selected, completing that programmingsession. At the end of a programming session, each device knows if itsload button has been used to adjust an associated load since the startof the last programming session and not subsequently removed as a scenemember. If this condition is met, the device knows that it is part ofthe scene being programmed and that the device load control state valuein the house scene is the current device load control state value.Devices also know that if they have not been adjusted since the start ofthe last system programming session or have not been adjusted since theywere last removed from the scene, they are not part of the scene beingprogrammed in this programming session. The selection of the scenetrigger initiates the capture of the created scene, ends the currentprogramming session, and starts a new programming session. Furtherdetails of the SPI can be found in U.S. patent application Ser. No.10/154,403, filed May 22, 2002, and entitled “Method and Apparatus forProviding Distributed Scene Programming in a Home Automation and ControlSystem,” (Attorney Docket No. MSFT118856), the subject matter of whichis incorporated herein by reference.

The house scene system resource 84 is described in greater detail belowwith respect to FIGS. 5-10. The house scene system resource 84 draws onboth the standard Home Plug and Play protocol 82 and the CEBus protocol80 to perform the needed functionality. The house scene system resource84 also draws on both the SPI 88 and the dynamic resource role model 86to maximize the benefits of the house scene system resource 84functionality.

As noted above, those skilled in the art should appreciate that whilethe foregoing protocols are presently preferred and are employed in anactual embodiment of the invention, the present invention is protocolindependent and may be implemented using many types of protocols,including, but not limited to, the Simple Control Protocol, theUniversal Plug and Play protocol for a Local Area Network (LAN), theHome Plug and Play protocol known as HPnP, the IEEE-1394 protocol,Consumer Electronics Bus known as CEBus, PowerBus, and other protocolsknown to those skilled in the art.

The actual embodiment of the invention described herein uses as its basecommunication protocol the CEBus protocol 80 from the CEBus IndustryCouncil, Inc. The CEBus protocol is expanded by the Home Plug & Playprotocol 82, also from the CEBus Industry Council, Inc. The CEBusprotocol expanded by the HPnP protocol provides a uniform implementationfor using the Common Application Language (“CAL”) (EIA-721), from theElectronic Industries Alliance (“EIA”), as a language for inter-devicecommunication. CAL is a high-level command language used by devices forcommunication over CEBus®. The Home Plug and Play protocol providesuniform implementation rules for CAL, accommodates various communicationprotocols so that it works with multiple home network transports,defines common household objects through an object-oriented language,formalizes status, listener, and request objects, uses loose coupling toshare status reports, and provides other functionality as known to thoseskilled in the art.

The CEBus defined CAL household objects are based on distinct devicesubsystems that are modeled as resources. Each resource subtype has itsown different resource contexts and objects.

The actual embodiment using the CEBus and HPnP protocol defines a system“house scene” resource also called a house scene context. The actualembodiment uses the HPnP defined context channel number method with thehouse scene resource for the unique scene identifier. Each house scenestored by a device requires a separate house scene resource copy orinstance in the device. To enable the device to be a participant of manydifferent house scenes, where the device load level in each house scenemay be very different, the device requires an internal device resourceinstance for each desired house scene. These house scene resourceinstances are in addition to the applicable CEBus subsystem resource ina device, and act in parallel with the device specific subsystemresource. Each device has multiple instances of the house sceneresource, and each resource instance is capable of being assigned aunique house scene resource channel number. The device internal resourceinstance most recently commanded to action, either one of the housescene resource instances or the subsystem resource instance, has controlover the product or appliance controlled by the device controller at anymoment. Since the scene “in totality” is the system resource, thedevices only have to understand the house scene resource context andobjects in order to launch and/or be a participant of a house scene. Aslong as a totally new device understands the house scene resource, itcan be included in a scene with any other subsystem device thatunderstands the house scene resource. An existing device can trigger ahouse scene containing a new device that may have been created,developed or thought of long after the trigger device was deployed,because the existing device does not need to understand how tocommunicate with the new device, only with the new device's house sceneresource. No device specific subsystem instance is actually required ina device in order to be a participant of a house scene.

This invention is different from traditional CEBus systems. CEBussubsystems cannot talk to each other without an interpreter such as acentral controller or a programming tool. While an interpreter canoverwrite the normal CEBus subsystem communication to control adifferent subsystem type, multiple different subsystem types cannot becontrolled. CEBus attempts to reduce the number of resource commandsneeded for one scene by “lumping” together devices so that they all actas a group to achieve the same end state. To achieve individualindependent state values, individual device control is required. TheHPnP protocol was created to solve CEBus problems, and makes it easierto group together separate resources into zones with unique channelnumbers assigned to each zone. The zone members act in unison in thesame manner in response to commands sent with their associated zonechannel number. Devices of the same subtype cannot be in more than onezone at a time. Thus, the HPnP extension only extends the individualresource control mindset. For example, a scene launch source employingCEBus with HPnP that needs to activate 5 subsystems in a particularscene needs to send 5 different messages originating in 5 differentinternal contexts to individually control each subsystem type. The HPnPstate vector allows one compound command to include sending all thesub-state information for each different subsystem in the scene at once.But if a new subsystem type is added, the scene launcher must beupgraded to know or be programmed to know how to address the newsubtype, or the new subtype cannot be added to the scene.

In accordance with this invention, devices participate in house scenesas scene members or scene triggers. A device may both trigger a sceneand be a member of that scene, only trigger that scene, only be a scenemember, or not be a participant in a scene.

FIG. 5 illustrates a routine 500 showing house scene member creationusing a one-step indication according to the actual embodiment of thepresent invention described herein. Routine 500 starts at block 502where a device is given an indication to learn or capture its scenemember state for a house scene associated with the provided house sceneidentifier. Routine 500 then proceeds to block 504 where the devicesaves the current device load state as the house scene load state sceneassociated with the provided house scene identifier. The actualembodiment of the present invention described herein uses as theindication the receipt of a special message from the network, calledmacro 21. Macro 21 is one of the available macro numbers defined byCEBus 80 as reserved for manufacturer specific functions. Macro 21contains within it the house scene identifier and house sceneparticipation status, in this case house scene membership. Those skilledin the art will appreciate that the exact form of the indicationprovided may vary and may depend at least partially on the protocolimplemented.

Those skilled in the art will appreciate that a manual indication may begiven to a device to learn or capture its scene member state for a housescene. The indication used depends on the manual user programminginterface implemented. The actual embodiment of the present inventiondescribed herein uses the SPI 88 as its manual user programminginterface, where the indication is provided in two parts. In SPI 88programming, the device receives a device specific manual indicationthat the device is a scene member that sets the device to the desiredscene state, and a later system wide indication to member devices tocapture the scene.

FIG. 6 illustrates a routine 600 showing house scene member creationusing SPI 88 indications according to the actual embodiment of thepresent invention described herein. Routine 600 starts in block 602where a device receives an indication to capture its scene member statefor a house scene. In the actual embodiment of the invention, theindication that the SPI sends is the HPnP 82 macro 20 binding macrocontaining the house scene channel number that is the house sceneidentifier. The macro 20 command indication is broadcast by a device inSPI scene programming mode after a trigger button on that device ispressed to capture a scene during a scene programming session, and thetrigger device has acquired a house scene identifier for the scene to becaptured. From block 602, the routine 600 proceeds to block 604 where atest is made to determine if the receiving device is a member based onpreviously received member indications, such as an adjustment on theload. If the device is a scene member of the house scene being captured,the routine 600 moves from block 604 to block 606 where the device savesthe current device load state as the house scene load state sceneassociated with the provided house scene identifier. If the device is anot a member of the house scene being captured, the routine 600 branchesfrom block 604 to block 608 where the scene capture ends because thereis no scene membership to capture on the device.

FIG. 7 illustrates a routine 700 showing house scene trigger creationusing SPI 88 indications according to the actual embodiment of thepresent invention described herein. Routine 700 starts in block 702where a device is given an indication, such as a press on a triggerbutton on the device during a SPI 88 scene programming session, toselect its trigger button as a scene trigger for a house scene. Theroutine 700 then proceeds to block 704 where it acquires the house sceneidentifier for the scene. As previously mentioned, trigger buttons mayhave fixed house scene identifiers associated with them, or a triggerbutton may learn a system resource house scene identifier to beassociated with the actuating trigger button. The illustrated routinedoes not have a predefined house scene identifier associated with eachtrigger button; therefore, the trigger button must obtain a house sceneidentifier at the time when it is associated with a house scene. Thehouse scene identifier is acquired by using the identifier of a copiedhouse scene, if in SPI copied scene mode, or by hailing for an unusedhouse scene identifier in the standard method for acquiring a resourceidentifier provided by the CEBus protocol 80 and HPnP protocol 82standards in SPI new scene mode. This process is referred to as resourcechannel hailing in the HPnP protocol 82. Those skilled in the art willappreciate that the activities performed to acquire a house sceneidentifier may vary depending on the protocol implemented. After a housescene identifier is acquired, the routine 700 proceeds to block 706where the device associates the selected trigger button with theacquired house scene identifier.

The actual embodiment of the present invention also uses the receipt ofa special message from the network, called macro 21, as an indication toselect a trigger button for a house scene. As previously discussed,macro 21 is one of the available macro numbers defined by CEBus 80 asreserved for manufacturer specific functions. Macro 21 contains withinit the house scene identifier and house scene participation status, inthis case as house scene trigger.

FIG. 8 illustrates a routine 800 showing a house scene launch duringnormal operation according to the actual embodiment of the presentinvention described herein. The routine 800 starts in block 802 where atest is made to determine if an indication to launch a house scene, suchas pressing a scene trigger button on the device, has been received. Ifa launch scene indication has been received, the routine 800 branches toblock 804 where a scene launch command for the house scene associatedwith that trigger button is broadcast. Then the routine 800 proceeds toblock 806. If a local launch scene indication has not been received, theroutine 800 also proceeds to block 806. In block 806, a test is made todetermine if a scene launch command has been received, either locally orfrom a remote source and, if received, if the device is a member of theidentified house scene. If the device is a member of the identifiedhouse scene, the routine 800 proceeds to block 808 where the device setsits load to the load state associated with the house scene identifier.If the device is not a member of the identified house scene, no furtheraction is taken.

As previously mentioned, a device may be a member of many house scenes.The load of a device is controlled by the most recent action of a localload adjustment or the most recent scene launched that the device is amember of. A device maintains knowledge of the scene identity currentlyin control of the device load in the manner shown in FIG. 9 anddescribed below. Sometimes it may be desirable for the home automationand control system to know if a house scene has lost control of one ormore of its member devices because the device load is manually adjustedor a later house scene has taken control of the device load. This isimportant if one of the scene members can only be in a particular stateif another device is in a particular state. For example, for safetyreasons, some heaters require that the heat source only be on if the fanis also on, but the fan can be on without the heat source being on. Soif a scene that turns both the fan on and the heater on loses control ofthe fan, the home automation and control system needs to know that thescene's control over all members has been compromised, so thatcorrective action can be taken. In a distributed control-based networkof the type contemplated by this invention, no central controller ismonitoring the overall system to sense the presence of such compromises.The invention compensates for this lack by each device notifying thehome automation and control system of a system compromise if the devicewas controlled by a house scene, and the control of the device by thatparticular scene is lost. To reduce total traffic, compromisenotification occurs only if the system was not previously notified thatthe house scene was compromised by another member of the compromisedhouse scene. Compromise notification is for informational purposes only,and a system device will only perform an action after receivingcompromise notification if the device has been programmed to do so. Anew launch of the house scene causes the house scene to revert back toits uncompromised state. Those skilled in the art will appreciate thatwhile the use of house scene compromise notification is not required toimplement house scenes, the use of house scene compromise notificationprovides desirable feedback for many conditional events.

FIG. 9 illustrates a state machine 900 that maintains knowledge of thehouse scene currently in control of a device load and the compromisedstatus of the house scene previously in control of the device loadaccording to an actual embodiment of the present invention. Each devicehas its own state machine 900. In addition, each house scene in a devicehas its own compromise flag whose state identifies the compromised ornot compromised status of the house scene. Those skilled in the art willappreciate that a device controlling multiple loads independently wouldrequire one state machine 900 for each unique local independentlycontrolled load.

The state machine 900 begins at state 902 when the device is unused fromthe factory and no scene controls the load. If a house scene launchcommand is received from a local or remote source while in state 902 andthe device is a member of that house scene, the state machine 900 movesto the scene controls load 904 state, with the house scene that waslaunched becoming the house scene in control of the load. If anotherhouse scene launch command for that same house scene is received from alocal or remote source while the state machine 900 is in state 904, thestate remains the same. If a new house scene launch command for adifferent house scene is received from a local or remote source and thedevice is a member of that new house scene, the state machine 900temporarily proceeds to the old scene compromised state 906. When in theold scene compromised state 906, the state machine compromises the housescene that was in control, sets that particular house scene status tocompromised, and broadcasts the scene compromise status to the otherdevices of the home automation and control system. The state machine 900then immediately proceeds back to the scene controls load state 904 withthe new house scene set as the current house scene in control.

If a local load change occurs when the state machine 900 is in state904, the state machine proceeds to the old scene compromised state 906.As a result, the house scene that was in control is compromised,resulting in that particular house scene status being set tocompromised, and that particular house scene compromise status beingbroadcast to the other devices of the home automation and controlsystem. The state machine 900 then immediately proceeds back to the noscene state 902. If a local load change occurs when the state machine900 is in state 902, the state remains unchanged.

A house scene may be defined as having two states when launched, the“on” or activate state where the house scene launch causes all housescene member devices to go to their associated scene states, and the“off” or deactivate state, where all scene members go to a defaultvalue. When so defined, the default value may be the device off value,the last manually set device value, the value the device was at whenlast on, some set value chosen by a programmer, or any other value asdefined by the implementation. This concept does not have to beimplemented in order to have successful house scenes, but is useful toallow one button to turn scenes “on” and “off.” However, if anotherscene with the same or some of the same members as a scene that is “on”is launched, the next press of a trigger button that toggles betweenlaunching the scene in the “on” and “off” may not meet the user'sdesire. The next press by the user may be due to a desire to launch thehouse scene “on,” rather than turn the scene “off.” In accordance withthis invention, as described next, the compromised status of the housescene can be used to determine if the next house scene trigger should orshould not launch the scene as “on.”

FIG. 10 illustrates a state machine 1000 that maintains knowledge of thelaunching of the house scene in two scene states, and changes the nextstate launched with respect to the house scene compromise status of thehouse scene. The state machine 1000 begins at state 1006 when the sceneis created. A press on the house scene trigger button causes the statemachine 1000 to launch the scene in the activate state and transitionfrom state 1006 to the house scene last activated state 1002. When instate 1002, a press on the house scene trigger causes the launch of thehouse scene in the deactivate state, and the state machine 1000 totransition to the house scene last deactivated state 1004. In state1004, a press on the house scene trigger causes the launch of the housescene in the activate state, and the state machine 1000 transitions tothe house scene last activated state 1002. The state machine 1000 willtransition to state 1006 when a house scene compromise notification forthat particular house scene is received, from the house scene lastactivated state 1002 or the house scene last deactivated state 1004. Inone actual embodiment of the present invention, the house scene twostates of activation and deactivation concept and the associated statemachine illustrated in FIG. 10 are implemented as a programmable option,with the default being to launch all scenes as activated state.

A command message may be used to initiate single step house scenecapture when the device does not know its roles in the scene beingprogrammed. The exact form of the command message may vary and depends,at least partially, on the protocol implemented. One actual embodimentof the invention uses one of the available macro numbers (Macro 21)defined by CEBus 80 as reserved for manufacturer specific commandfunctions. This embodiment allows multiple instances of a resource, suchas house scenes, to be programmed. The Macro 21 contains information onthe resource instance as well as the resource identifier, and resourceparticipation roles. To minimize the length of the Macro 21 command, theactual embodiment determines the action to be taken when a command isreceived by the presence or absence of expected information in thecommand. The presence of a valid role implies the command is requestinga binding action. The absence of a valid role implies the command isrequesting an unbinding action. The presence of a specific resourceinstance implies that the action is to effect that particular instanceonly. The absence of a resource instance indicates that any applicableinstance may be acted on. FIG. 11 is a flow diagram showing theprocessing of a generic resource Macro 21 command. While not shown inFIG. 11, as will be readily appreciated by those skilled in the art,actions specific to a particular type of resource will also be definedin implementations directed to accomplishing such specific actions.

FIG. 11 illustrates a routine 1100 showing the processing of a one-stepscene capture command. The routine 1100 starts in block 1102 where atest is made to determine if the role information was included in thecommand message. If the role information has been included, the actionrequested is to bind a resource, and the routine 1100 branches to block1104 where a test is made to determine if the resource networkidentifier information was included in the command message. If theresource network identifier information has been included, the routine1100 branches to block 1106 where a test is made to determine if theresource instance information was included in the command message. Ifthe resource instance information has been included, the routine 1100branches to block 1108 where the resource instance becomes the instanceused to bind or associated the scene identified by the house sceneidentifier. If the role indicates local membership status, the loadstate of the product or appliance is also associated with the housescene identifier. In block 1106, if the resource instance informationhas not been included, the routine 1100 branches to block 1110 where thefirst corresponding resource instance that is not currently in usebecomes the instance used to bind or associated the scene identified bythe house scene identifier. Again, if the role indicates localmembership status, the load state of the product or appliance is alsoassociated with the house scene identifier. In block 1104, if theresource identifier information has been not been included, the routine1100 branches to the error handling block 1112, because no binding cantake place without a resource identifier.

In block 1102, if the role information has not been included, the actionrequested is to unbind a resource, because no binding can take placewithout a resource identifier, and the routine 1100 branches to theerror handling block 1114. At block 1114 a test is made to determine ifthe resource network identifier information was included in theindication message. If the resource network identifier information hasbeen included, the routine 1100 branches to block 1120 where allresource instances bound to the resource identifier are unbound. If theresource network identifier information has not been included, theroutine 1100 branches to block 1116 where a test is made to determine ifthe resource instance information was included in the indicationmessage. If the resource instance information has been included, theroutine 1100 branches to block 1122 where the resource instance isunbound. If the resource instance information has not been included, theroutine 1100 branches to block 1118 where all the instances of theresource are unbound.

While the foregoing has described the presently preferred embodiment ofthe invention, as will be readily appreciated by those skilled in theart and others, various changes can be made therein without departingfrom the spirit and scope of the invention as defined by the appendedclaims.

1. A distributed control system for automatically controlling the loadstatus of a plurality of products and/or appliances to create a scenecomprising a plurality of programmable devices, each of saidprogrammable devices: capable of controlling the load status of anassociated product or appliance; in response to the programmable devicereceiving an indication to learn a scene, locally storing theprogrammable device's membership status in the scene and the load statusof the associated product or appliance when the scene is launched; andin response to the programmable device receiving a launch commandassociated with the learned scene, adjusting the load status of theassociated product or appliance to the stored load status associatedwith the scene.
 2. A distributed control system for automaticallycontrolling the operation of a plurality of products and/or appliancesto create a scene as claimed in claim 1, wherein each of saidprogrammable devices includes a setup controller that, when actuated,produces said indication to learn a scene.
 3. A distributed controlsystem for automatically controlling the operation of a plurality ofproducts and/or devices to create a scene as claimed in claim 2, whereinthe setup controller is manually controlled by the actuation of abutton.
 4. A distributed control system for automatically controllingthe operation of a plurality of products and/or appliances to create ascene as claimed in claim 2, wherein each of said programmable devicesalso includes a load controller for controlling the adjustment of theload status of the product or appliance associated with the device.
 5. Adistributed control system for automatically controlling the operationof a plurality of products and/or appliances to create a scene asclaimed in claim 4, wherein said load controller is manually controlledby the actuation of a button.
 6. A distributed control system forautomatically controlling the operation of a plurality of productsand/or appliances to create a scene as claimed in claim 4, wherein atleast one of said programmable devices also includes one or moretriggers the actuation of which produces a scene launch command.
 7. Adistributed control system for automatically controlling the operationof a plurality of products and/or devices to create a scene as claimedin claim 6, wherein said trigger is manually controlled by the actuationof a button.
 8. A distributed control system for automaticallycontrolling the operation of a plurality of products and/or appliancesto create a scene as claimed in claim 4, wherein each of saidprogrammable devices also includes a plurality of triggers theactivation of which produces an individual launch command associatedwith each trigger.
 9. A distributed control system for automaticallycontrolling the operation of a plurality of products and/or devices tocreate a scene as claimed in claim 7, wherein said triggers are manuallycontrolled by the actuation of buttons.
 10. A distributed control systemfor automatically controlling the operation of a plurality of productsand/or appliances to create a scene as claimed in claim 1, wherein eachof said programmable devices also includes a load controller forcontrolling the adjustment of the load status of the product orappliance associated with the device.
 11. A distributed control systemfor automatically controlling the operation of a plurality of productsand/or appliances to create a scene as claimed in claim 10, wherein saidload controller is manually controlled by the actuation of a button. 12.A distributed control system for automatically controlling the operationof a plurality of products and/or appliances to create a scene asclaimed in claim 1, wherein each of said programmable devices alsoincludes a trigger the actuation of which produces a scene launchcommand.
 13. A distributed control system for automatically controllingthe operation of a plurality of products and/or devices to create ascene as claimed in claim 12, wherein said trigger is manuallycontrolled by the actuation of a button.
 14. A distributed controlsystem for automatically controlling the operation of a plurality ofproducts and/or appliances to create a scene as claimed in claim 1,wherein each of said programmable devices also includes a plurality oftriggers the activation of which produces an individual launch commandassociated with each trigger.
 15. A distributed control system forautomatically controlling the operation of a plurality of productsand/or devices to create a scene as claimed in claim 14, wherein saidtriggers are manually controlled by the actuation of buttons.
 16. Adistributed control system for automatically controlling the operationof a plurality of products and/or appliances to create a scene asclaimed in claim 1, wherein each of said programmable devices includesan indicator for indicating the status of the programmable device.
 17. Adistributed control system for automatically controlling the operationof a plurality of products and/or appliances to create a scene asclaimed in claim 1 wherein said indication to learn a scene is a commandmessage.
 18. A distributed control system for automatically controllingthe operation of a plurality of products and/or appliances to create ascene as claimed in claim 17, wherein said command message includes roleinformation.
 19. A distributed control system for automaticallycontrolling the operation of a plurality of products and/or appliancesto create a scene as claimed in claim 18 wherein the presence of validrole information implies the command message is requesting a bindingaction.
 20. A distributed control system for automatically controllingthe operation of a plurality of products and/or appliances to create ascene as claimed in claim 18 wherein the absence of a valid role impliesthe command message is requesting an unbinding action.
 21. A distributedcontrol system for automatically controlling the operation of aplurality of products and/or appliances to create a scene as claimed inclaim 18 wherein said command message also includes a resource instance.22. A distributed control system for automatically controlling theoperation of a plurality of products and/or appliances to create a sceneas claimed in claim 21 wherein the presence of a specific resourceinstance implies that action requested by the command message is toapply only to the specific resource instance.
 23. A distributed controlsystem for automatically controlling the operation of a plurality ofproducts and/or appliances to create a scene as claimed in claim 21wherein the absence of a resource instance implies that action requestedby the command message applies to any resource instance capable ofcarrying out the action.
 24. A programmable device suitable for use in adistributed control system for automatically controlling the load statusof an associated product and/or appliance to create a scene, saidprogrammable device including: (a) a storage medium; (b) a controllerfor: (i) in response to manual input, adjusting the load status of saidassociated product or appliance; (ii) receiving an indication that theprogrammable device is to become a member of a house scene; and (iii) inresponse to receiving said indication that the programmable device is tobecome a member of a house scene, storing in said storage mediuminformation regarding the membership status of said programmable devicein said house scene and the current load status of said associatedproduct or appliance.
 25. A programmable device as claimed in claim 24,including a setup button that when actuated places said controller in astate suitable for receiving said indication that said programmabledevice is to become a member of a house scene.
 26. A programmable deviceas claimed in claim 24, including a load button for adjusting the loadstatus of said associated product or appliance.
 27. A programmablecontroller as claimed in claim 24, wherein said programmable device alsoincludes at least one trigger button that, when actuated, causes saidcontroller to generate a scene launch command that causes programmabledevices to adjust the load status of their associated product orappliance to the load status stored in said storage medium of thedevices or members of the scene associated with the scene launchcommand.
 28. A programmable device as claimed in claim 27, wherein saidprogrammable device includes a plurality of trigger buttons each ofwhich, when actuated, causes said controller to generate a separate anddistinct scene launch command for each unique scene.
 29. A programmabledevice as claimed in claim 24, including an indicator for indicating thestatus of said programmable device.
 30. A programmable device as claimedin claim 29, wherein said status includes whether said set up button hasplaced said controller in a state suitable for receiving said indicationthat said programmable device is to become a member of a scene.
 31. Amethod for automatically controlling the operation of a plurality ofproducts and/or appliances to create a scene comprising: distributing aplurality of programmable devices, each of said programmable devicesassociated with a product and/or appliance and capable of adjusting theload status of said product or appliance; in response to saidprogrammable device receiving an indication to learn a scene, saidprogrammable device locally storing the membership status of theprogrammable device in the scene and the load status of the product orappliance with which said programmable device is associated; and inresponse to said programmable device receiving a launch commandassociated with a learned scene, adjusting the load status of theproduct or appliance with which the device is associated to the storedload status.
 32. A method for automatically controlling the operation ofa plurality of products and/or appliances to create a scene as claimedin claim 31 wherein each of said programmable devices includes a setupcontroller and wherein said method includes, in response to theactuation of said setup controller, producing said indication to learn ascene.
 33. A method of automatically controlling the operation of aplurality of products and/or devices to create a scene as claimed inclaim 32 wherein at least one of said devices includes a load controllerand wherein said method includes adjusting the load status of saidproduct or appliance in response to the operation of said loadcontroller.
 34. A method for automatically controlling the operation ofa plurality of products and/or devices to create a scene as claimed inclaim 33 wherein at least one of said programmable devices also includesa at least one trigger and wherein said method includes generating alaunch command in response to the actuation of said trigger.
 35. Amethod for automatically controlling the operation of a plurality ofproducts or appliances to create a scene as claimed in claim 34 whereinat least one of said devices includes a plurality of triggers andwherein said method includes generating a separate and distinct launchcommand in response to the actuation of each unique scene associatedwith each one of said plurality of triggers.
 36. A method ofautomatically controlling the operation of a plurality of productsand/or devices to create a scene as claimed in claim 31 wherein at leastone of said devices includes at least one load controller and whereinsaid method includes adjusting the load status of said product orappliance in response to the operation of said load controller.
 37. Amethod for automatically controlling the operation of a plurality ofproducts and/or devices to create a scene as claimed in claim 31 whereinat least one of said programmable devices also includes a at least onetrigger and wherein said method includes generating a launch command inresponse to the actuation of said trigger.
 38. A method forautomatically controlling the operation of a plurality of products orappliances to create a scene as claimed in claim 31 wherein at least oneof said devices includes a plurality of triggers and wherein said methodincludes generating a separate and distinct launch command in responseto the actuation of each of said plurality of triggers.
 39. A method forautomatically controlling the operation of a plurality of productsand/or devices to create a scene as claimed in claim 31 wherein each ofsaid programmable devices includes an indicator for indicating thestatus of said programmable device and wherein said method includescausing said indicator to produce a predetermined indication in responseto the operational status of said programmable device.
 40. A method forautomatically controlling the operation of a plurality of productsand/or appliances to create a scene as claimed in claim 24 wherein saidindication to learn a scene is a command message.
 41. A method forautomatically controlling the operation of a plurality of productsand/or appliances to create a scene as claimed in claim 40, wherein saidcommand message includes role information.
 42. A method forautomatically controlling the operation of a plurality of productsand/or appliances to create a scene as claimed in claim 41 wherein thepresence of valid role information implies the command message isrequesting a binding action.
 43. A method for automatically controllingthe operation of a plurality of products and/or appliances to create ascene as claimed in claim 41 wherein the absence of a valid role impliesthe command message is requesting an unbinding action.
 44. A method forautomatically controlling the operation of a plurality of productsand/or appliances to create a scene as claimed in claim 41 wherein saidcommand message also includes a resource instance.
 45. A method forautomatically controlling the operation of a plurality of productsand/or appliances to create a scene as claimed in claim 44 wherein inthe presence of a specific resource instance implies that actionrequested by the command message is to apply only to the specificresource instance.
 46. A method for automatically controlling theoperation of a plurality of products and/or appliances to create a sceneas claimed in claim 44 wherein the absence of a resource instanceimplies that action requested by the command message applies to anyresource instance capable of carrying out the action.